{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"https://raw.githubusercontent.com/Qiskit/qiskit-tutorials/master/images/qiskit-heading.png\" alt=\"Note: In order for images to show up in this jupyter notebook you need to select File => Trusted Notebook\" width=\"500 px\" align=\"left\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## _*The Simon Algorithm*_ \n",
    "\n",
    "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n",
    "\n",
    "The Simon algorithm is an example that shows a quantum algorithm can solve a problem exponentially efficient than any classical algorithms. Like the Grover search, it depends on the existence of a blackbox (or, oracle) function that returns a predefined output over specific input or query. In the query-complexity setting, one cares only about how many queries are required to solve a specific problem, but does not care how the blackbox is realized. However, in this tutorial we have to implement it using the unit gates available in QISKit, just like we have done with the Grover search.\n",
    "\n",
    "We first describe the problem addressed by the Simon algorithm, show the steps of the algorithm and the construction of the blackbox function, and present the experimental results on simulators and real devices. \n",
    "\n",
    "***\n",
    "### Contributors\n",
    "Rudy Raymond\n",
    "\n",
    "### Qiskit Package Versions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'qiskit': '0.10.3',\n",
       " 'qiskit-terra': '0.8.1',\n",
       " 'qiskit-ignis': '0.1.1',\n",
       " 'qiskit-aer': '0.2.1',\n",
       " 'qiskit-ibmq-provider': '0.2.2',\n",
       " 'qiskit-aqua': '0.5.1'}"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import qiskit\n",
    "qiskit.__qiskit_version__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Problem <a id='introduction'></a>\n",
    "\n",
    "The Simon algorithm deals with finding a hidden integer $s \\in \\{0,1\\}^n$ from an oracle $f_s$ that satisfies $f_s(x) = f_s(y)$ if and only if $y = x \\oplus s$ for all $x \\in \\{0,1\\}^n$.  Here, the $\\oplus$ is the bitwise XOR operation. Thus, if $s = 0\\ldots 0$, i.e., the all-zero bitstring, then $f_s$ is a 1-to-1 (or, permutation) function. Otherwise, if $s \\neq 0\\ldots 0$, then $f_s$ is a 2-to-1 function. \n",
    "\n",
    "The Simon algorithm can find the hidden integer using only $O(n)$ queries to the blackbox function, while any classical algorithms require $\\Omega(\\sqrt{2^n})$ queries. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Algorithm to Find the Hidden Integer\n",
    "\n",
    "The Simon algorithm finds the hidden integer by combining quantum algorithm with postprocessing on classical computers as below. \n",
    "\n",
    "1. Prepare two quantum registers each of length $n$ that are initialized to all-zero bitstring: the first one as input and the second one as output of the blackbox function.\n",
    "$$\n",
    "|0\\rangle |0\\rangle\n",
    "$$\n",
    "\n",
    "2. Apply Hadamard gates to the first register to create superposition of all possible inputs. \n",
    "$$\n",
    "H^{\\otimes n} |0\\rangle |0\\rangle = \\frac{1}{\\sqrt{2^n}} \\sum_{x=0}^{2^n-1} |x\\rangle |0\\rangle\n",
    "$$\n",
    "\n",
    "3. Query the blackbox function to obtain the answer to queries on the second register.\n",
    "$$\n",
    "\\frac{1}{\\sqrt{2^n}} \\sum_{x=0}^{2^n-1} U_{f_s}|x\\rangle |0\\rangle = \\frac{1}{\\sqrt{2^n}} \\sum_{x=0}^{2^n-1} |x\\rangle |f_s(x)\\rangle\n",
    "$$\n",
    "\n",
    "4. Apply Hadamard gates to the first register. \n",
    "$$\n",
    "\\frac{1}{\\sqrt{2^n}} \\sum_{x=0}^{2^n-1} H^{\\otimes n}|x\\rangle |f_s(x)\\rangle = \\frac{1}{2^n} \\sum_{y=0}^{2^n-1}\\sum_{x=0}^{2^n-1} (-1)^{x \\cdot y}|y\\rangle |f_s(x)\\rangle = \\frac{1}{2^n} \\sum_{y=0}^{2^n-1} |y\\rangle \\sum_{x=0}^{2^n-1} ( (-1)^{x \\cdot y} + (-1)^{(x\\oplus s) \\cdot y} )  |f_s(x)\\rangle\n",
    "$$\n",
    "\n",
    "    Notice that at the right-hand side of the above equation, because $(-1)^{(x\\oplus s) \\cdot y} = (-1)^{x\\cdot y +  s \\cdot y}$ we can conclude that the probability amplitude of the basis state $|y\\rangle |f_s(x)\\rangle$ is $(-1)^{x\\cdot y} (1 + (-1)^{s \\cdot y}  )$, which is zero if and only if $s \\cdot y = 1$. Thus, measuring the first register will always give $y$ such that $s \\cdot y = 0$. Moreover, we can obtain many different $y$'s by repeating Step 1 to 4. \n",
    "\n",
    "5. Repeat Step 1 to 4 for $m$ times to obtain $y_1, y_2, \\ldots, y_m$. \n",
    "\n",
    "6. **(Classical post-processing)** Let $\\mathbf{Y}$ be an $m\\times n$ matrix whose $i$-th row is $y_i$ in Step 5, and $\\vec{s}$ be the column vector whose $j$-th element is the $j$-th bit of $s$. Solve the following system of linear equations to obtain $s$. \n",
    "$$\n",
    "\\mathbf{Y} \\vec{s} = 0 \n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Circuit <a id=\"circuit\"></a>\n",
    "\n",
    "We now implement the Simon algorithm with Qiskit by first preparing the environment."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T18:51:35.519392Z",
     "start_time": "2018-09-25T18:51:35.501393Z"
    }
   },
   "outputs": [],
   "source": [
    "#initialization\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "# importing Qiskit\n",
    "from qiskit import BasicAer, IBMQ\n",
    "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, execute\n",
    "from qiskit.compiler import transpile\n",
    "from qiskit.tools.monitor import job_monitor\n",
    "\n",
    "# import basic plot tools\n",
    "from qiskit.tools.visualization import plot_histogram"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T18:50:06.948246Z",
     "start_time": "2018-09-25T18:50:06.016456Z"
    }
   },
   "outputs": [],
   "source": [
    "# Load the saved IBMQ accounts\n",
    "IBMQ.load_accounts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We then set the hidden bitstring $s$ that will be used to construct the circuit of the blackbox function (whose details will be given later). The number of qubits used in the experiment is twice the length of the bitstring $s$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T18:47:05.431217Z",
     "start_time": "2018-09-25T18:47:05.428155Z"
    }
   },
   "outputs": [],
   "source": [
    "s = \"010101\" # the hidden bitstring\n",
    "\n",
    "assert 1 < len(s) < 20, \"The length of s must be between 2 and 19\"\n",
    "\n",
    "for c in s:\n",
    "    assert c == \"0\" or c == \"1\", \"s must be a bitstring of '0' and '1'\"\n",
    "    \n",
    "n = len(s) #the length of the bitstring"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We then use Qiskit to create the circuit of the Simon algorithm prior the querying the blackbox function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T18:47:05.439545Z",
     "start_time": "2018-09-25T18:47:05.433240Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<qiskit.extensions.standard.barrier.Barrier at 0x11baca0b8>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Step 1\n",
    "# Creating registers\n",
    "# qubits for querying the oracle and recording its output\n",
    "qr = QuantumRegister(2*n)\n",
    "# for recording the measurement on the first register of qr\n",
    "cr = ClassicalRegister(n)\n",
    "\n",
    "circuitName = \"Simon\"\n",
    "simonCircuit = QuantumCircuit(qr, cr)\n",
    "\n",
    "# Step 2\n",
    "# Apply Hadamard gates before querying the oracle\n",
    "for i in range(n):\n",
    "    simonCircuit.h(qr[i])\n",
    "\n",
    "# Apply barrier to mark the beginning of the blackbox function\n",
    "simonCircuit.barrier()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Constructing a Circuit for the Blackbox Function\n",
    "\n",
    "We now details the construction of 1-to-1 and 2-to-1 permutation circuit of the blackbox function. Let us assume the blackbox function receive $|x\\rangle|0\\rangle$ as input. With regards to a predetermined $s$, the blackbox function writes its output to the second register so that it transforms the input to $|x\\rangle|f_s(x)\\rangle$ such that $f(x) = f(x\\oplus s)$ for all $x \\in \\{0,1\\}^n$. \n",
    "\n",
    "Such a blackbox function can be realized by the following procedures.\n",
    "\n",
    "-  Copy the content of the first register to the second register.\n",
    "$$\n",
    "|x\\rangle|0\\rangle \\rightarrow |x\\rangle|x\\rangle\n",
    "$$\n",
    "\n",
    "-  **(Creating 1-to-1 or 2-to-1 mapping)** If $s$ is not all-zero, then there is the least index $j$ so that $s_j = 1$. If $x_j = 0$, then XOR the second register with $s$. Otherwise, do not change the second register.\n",
    "$$\n",
    "|x\\rangle|x\\rangle \\rightarrow |x\\rangle|x \\oplus s\\rangle~\\mbox{if}~x_j = 0~\\mbox{for the least index j}\n",
    "$$\n",
    "\n",
    "-  **(Creating random permutation)** Randomly permute and flip the qubits of the second register.\n",
    "$$\n",
    "|x\\rangle|y\\rangle \\rightarrow |x\\rangle|f_s(y)\\rangle\n",
    "$$\n",
    "\n",
    "Below is the circuit of the blacbox function based on the above procedures."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T18:47:05.449055Z",
     "start_time": "2018-09-25T18:47:05.441604Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<qiskit.extensions.standard.barrier.Barrier at 0x11bae6518>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Step 3 query the blackbox function\n",
    "# copy the content of the first register to the second register\n",
    "for i in range(n):\n",
    "    simonCircuit.cx(qr[i], qr[n+i])\n",
    "\n",
    "# get the least index j such that s_j is \"1\"\n",
    "j = -1\n",
    "for i, c in enumerate(s):\n",
    "    if c == \"1\":\n",
    "        j = i\n",
    "        break\n",
    "\n",
    "# Creating 1-to-1 or 2-to-1 mapping with the j-th qubit of x as control to XOR the second register with s\n",
    "for i, c in enumerate(s):\n",
    "    if c == \"1\" and j >= 0:\n",
    "        simonCircuit.cx(qr[j], qr[n+i]) #the i-th qubit is flipped if s_i is 1\n",
    "\n",
    "# get random permutation of n qubits\n",
    "perm = list(np.random.permutation(n))\n",
    "\n",
    "#initial position\n",
    "init = list(range(n))\n",
    "i = 0\n",
    "while i < n:\n",
    "    if init[i] != perm[i]:\n",
    "        k = perm.index(init[i])\n",
    "        simonCircuit.swap(qr[n+i], qr[n+k]) #swap qubits\n",
    "        init[i], init[k] = init[k], init[i] #marked swapped qubits\n",
    "    else:\n",
    "        i += 1\n",
    "        \n",
    "# randomly flip the qubit\n",
    "for i in range(n):\n",
    "    if np.random.random() > 0.5:\n",
    "        simonCircuit.x(qr[n+i])\n",
    "\n",
    "# Apply the barrier to mark the end of the blackbox function\n",
    "simonCircuit.barrier()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can continue with the steps of the Simon algorithm: applying the Hadamard gates to the first register and measure."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T18:47:08.221872Z",
     "start_time": "2018-09-25T18:47:05.450515Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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AIAA9KmwE4YRsJ0hQ4aYjgAAAAAEoE+FnTCMgO2cP3/edAQAAAAgAH0q7IRhBAAAAAAAsBTDCNhO7969TUcAAAAAAtCnwk4YRsB2tm/fbjoCAAAAEIA+FXbCMAK2s3DhQtMRAAAAgAD0qbAT2wwj1q9fH/K9bAcOHKjdu3eHJxCM2bp1q+kIMau6ulqvvfaaxowZo6SkJN11111KT09XcXGx6WiA7Rw/flyzZs1Sjx49lJSUpFGjRmnnzp2qqqoyHa1ef//73/WLX/xC9913n7p06aJ+/fpp2bJlOnfunOloMcfn82nNmjUaOHCgOnfurHvuuUerVq1SeXm56WiArdGnwk6MDiMqKys1b948tWvXTnFxcRozZowuXLgQMbVTU1OVn59vSZ5o0qlTJ7344ot+26qrqxUfH68dO3YYSgXTqqqqNHXqVA0fPly//e1vderUKX344Yf6xS9+Ibfbreeff950RMA2Xn75ZfXp00fPPfecSktLderUKe3atUujRo3S448/rn/+85+mIwY4d+6ckpOTNXnyZL399ts6c+aMjh49qmeeeUZf+tKXdPDgQdMRY0Zpaan69++vWbNmqaioSB999JGKioo0Z84c9evXT++//77piACiAGsC3Cyjw4isrCzl5eVp//79On36tCRp/PjxEVObYUSgM2fO6OzZs3K5XH7bS0tLVVFRoUGDBhlKBtNycnL0s5/9TJL8/vJaVVWl6upqzZgxQ3/84x9NxQNs4+2339YTTzyh6upqVVdX126vrKyUJP3617/W4sWLDaWrX1pamo4ePSrp379DavJfvnxZI0eOlM/nM5YvVlRWVuprX/uaTp06JSnwtf7oo4/08MMP69NPPzWWEUDkY02AphD2YcSWLVvUs2dPtWrVSiNGjFBGRobS0tIkSbm5uZo/f766d++u1q1ba/ny5dq1a5fKysrCHSuo2gMGDJDT6eSvMTfwer1yOp3q27ev3/bi4mJ16NBBiYmJhpIFr7Cw0HSEmPPPf/5TK1askMPhqHefZs2a6ac//amFqQB7WrVqlST5DSI+67nnntO1a9esitSogwcP6vXXX6/3FJKqqipdvHhR//u//2txstiza9cuvffeew2+1qWlpfrd735ncTIAUvT0qbGwJoB5YR1GbNiwQRkZGdq0aZMqKio0atQorV69Wm63W+Xl5Tp58qQG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04xAzVTR8TKo2bp06aI1a9YoJydHHTp00L///e9KjyorKipSbGyswsPD1ahRI3300Ufy9vZ2UmIAMLf69etb1Ygo1apVK9WtW9eBiQDHok6FmTitGQG4CntsYojq65577tG2bdt0ww036P7779ctt9yi1157TXv27NEff/whSSosLNSnn36qGTNmyN/fX7NmzdIDDzygbdu2yd/f3+C/AQAAqKmoU2EmNCNgOmPGjDE6AgzWqVMnbd++Xa+//rosFovGjx+voKAgXXvttZIkLy8vhYWF6cUXX1RoaKj+85//6O2339b1119vcHIAAFCTUafCTJy2ZwTgKjIzM42OABdw7bXXavTo0YqMjNShQ4e0a9cuHTx4UHFxcXrhhRfUqVMn3Xrrrdx7DAAAnIY6FWZCMwKAqbm5uemmm27STTfdJEnswg4AAAA4AbdpAAAAAAAAp6IZAdPZv3+/0REAAACAcqhTYSY0I2A6K1asMDoCAAAAUA51KsyEZgRMJyYmxugIAAAAQDnUqTATmhEAAAAAAMCpaEYAAAAAAACnohkB01m0aJHREQAAAIByqFNhJjQjYDqBgYFGRwAAAADKoU6FmdCMgOmEhYUZHQEAAAAohzoVZkIzAgAAAAAAOBXNCJhOaGio0REAAACAcqhTYSY0I2A6O3bsMDoCAAAAUA51KsyEZgQAAAAAAHAqmhEAAAAAAMCpaEbAdFatWmV0BAAAAKAc6lSYCc0IAAAAAADgVDQjYDqDBg0yOgIAAABQDnUqzIRmBAAAAAAAcCqaEQAAAAAAwKloRsB0xo0bZ3QEAAAAoBzqVJgJzQiYzvjx442OAAAAAJRDnQozoRkB0+natavREQC7KCkp0ffff689e/ZIkgoLCw1OBFSdxWLR119/rezsbEnS77//bnAiAHAe6lSYCc0ImM7x48eNjgBcteLiYq1fv17333+/GjVqJH9/fwUFBUmSvL291bZtW02bNk1ff/21wUkB6/32229avny5unfvLh8fH7Vu3VrBwcGSJE9PT4WEhGju3LnKy8szOCkAOBZ1KsyEZgQAVBM7d+5Up06ddM8992jbtm2699579eqrr2r16tWSpNjYWLVq1UoJCQlq3bq1Ro8erYKCAoNTAxVbs2aNWrRooUceeUQ//vijRowYoTfffLPsdT158mTVqVNHUVFR8vPzU3x8vM6f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oE6FmTisGREaGqoZM2ZowIAB8vPz0/bt29W5c+eLmhHR0dHq37+/QkND1bRpU1ksFqWkpEiSAgMDNWzYMPXs2VOLFi1Shw4d1KBBg8uuNXv2bAUGBtqUr6K1S3344YcKDg5Ww4YNbfzbw5UNGTLE6AhApWrVqqXevXtr5cqVOnfuXJXne++993T27FndfffddkgHXJ3WrVurVatW5X7fXq3ly5fL3d1dPXr0sMt8gNld6fjOyo79hP1Qp8JMHHqaRlxcnPLz83Xs2DElJibq0KFDFzUj3N3dNW/ePOXl5amwsFBr1qy56B/+48eP16effqqJEycqKCjoipeETZ8+3eadZytbW/rzFo2IiAib5oXru/nmm42OAFhl7NixOnHihN56660qzWOxWDR//ny1atVKvXr1slM6wHa1atXSmDFjtHnzZm3btq1Kc+Xn5+vNN9/Ufffdp6ZNm9opIWBeV2pElKIh4RzUqTATh+0ZcamCggLl5uZe1IyoTK9evXT+/Hk1bNhQr732mgPTXV7z5s01ePBgp68LANKf99h169ZN0dHR6tev31VvppuYmKgdO3bo7bffVq1aDu1BA5WKjIxUYmKiRo4cqd27d5dtaG2rCRMmqKCgQM8++6ydEwLmY7FY1K9fv0qP7yxtSEhSfHy8/u///k8zZ850ZlQANYjTmhF79+6Vp6enAgICrH7Ohx9+aLf1g4KCNGLECJueExsba7f1AcBWbm5uevPNN9WhQwfdd999+vjjj1W/fn2b5ti4cWPZbWnDhw93UFLAel5eXlq6dKnuvvtuPfLII0pNTbV5c+r58+crNTVVMTExVm2ECaBi7u7uGjJkiMaMGVPp8Z2lDYm6detedGoeANjKaR+RdenSRQUFBYbtvns1zQjUTBXt6Aq4mpYtW2rlypXKycnRnXfeqS+//NKq5xUXF2vRokW699571b59ey1fvpzdz+EyevfurZdeekkrVqxQ//799dNPP1n1vHPnzmny5MmaOnWqhgwZoueee87BSQHzGDt2bKWNiFK1atXSSy+9pNDQUAenMh/qVJgJ1+vCdBYvXmx0BMAmffr00bp163T8+HHdeuutmjx5sr7++uvLjrVYLFq3bp26deumcePGKTw8XB9//LF8fHycnBqo2NSpU/X6668rMzNTgYGBmjNnjvLy8i479rffftPy5csVFBSk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I5KTk206OzgkJEQbN250XCAYYuXKlUZHAOBijh07pkmTJiksLEzPPvvsVc3Rpk0bLVq0SDt27NDChQvtnBCw3datW7Vo0SJNmDBB995771XNcffdd2vq1KlaunSpNm3aZOeEcBXu7u665ZZb9NZbb1XakMjLy1P37t116NAhtW/f3okpzYE6FWbitGaExWLRtGnT5OvrK09PTw0cOFB5eXnOWv6qMkVERCgjI8PAhAAAZ1i6dKkKCgq0ePFi1ap19b8ahwwZou7du+vll1/m6ggYbsGCBWrQoIGef/75Ks0za9YsNW7cWAsWLLBTMriimJgYxcbGVtiQKG1EfPXVV3r//ffVs2dPA5Je3unTp+Xr66tVq1aVPXbu3Dl16dJFgwYNsukWFADO4bRmRHx8vNLT07V9+3YdPXpUkvTQQw85a/mrykQzAgBqvpKSEr3xxhvq2bOnbr755irN5ebmpieffFLff/89V9bBUL/88ovS09P12GOPqW7dulWaq06dOnr88ce1du3asnoJNVNFDQlXbkRIUr169TR16lTFxcWppKREFotFQ4YMkYeHh1JTU6vUaAbgGHb9qVyxYoVat26tevXqqVevXpoyZYoGDx4sSUpKSlJUVJRatWolb29vzZ07Vxs2bFBubq49I9ikskydOnWSu7u7du3aZVhG2F9WVpbREQC4kB9++EHffvvtVV/Gfqk+ffqodu3a2rp1q13mA67G9u3bZbFY7Pa6joiIUElJibZt22aX+eC6rtSQcOVGRKnx48fr559/1urVqxUZGamjR48qPT1dHh4eRkezGnUqzMRuzYhly5ZpypQpSk1NVWFhofr166fExEQFBwfr5MmT+u677xQSElI2PiAgQF5eXtqzZ49d1o+Pj1fHjh2tHm9tpoiICKWnp9slI1xDTk6O0REAuJD//ve/knTR74Oq8PDwUPv27cvmBYzw3//+V25ubgoKCrLLfB06dNA111zD69okLmxI/P3vf5ckl29ESFLdunU1bdo0jRgxQpmZmdqwYYO8vLyMjmUT6lSYiV2aEWfPntXkyZOVlJSkzp07y83NTaNGjZLFYlFwcLAKCwslSd7e3hc9z8fHp+yoqJ49e8rX17fcfY1XevxS0dHR+vLLL63ObE0mSerbt6/Wrl1r9bxwfWPHjjU6AgAXcuLECUlSkyZN7DZnkyZNlJ+f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dWXRokUZOXJkKisrM2vWrLS3t5d7rCGju7s7//E//sfU19fnueeey1133ZXt27fnf//v/52nn346TzzxRJ5//vl0dnbmySefzL/8l/8yn/70p1NfX58nnngiV1xxRTo6OvL000+nvr6+3L8OAAAAx2HIxoiWlpasXr06bW1t2b17d5Jkzpw5ZZ5qaOju7s6//bf/NnfeeWdmzpyZ//k//2fuu+++jB49+oi1b3/72/PhD384a9asyV//9V/nxz/+cWbMmJG9e/cKEQAAAKeoQR0jHn/88YwbNy5nnnlmPvShD+X222/P7NmzkyStra1pamrKmDFjUl1dnQcffDBr167Njh07yjz14Ld48eK0trbmzjvvzFe+8pWcffbZfTruoosuyhlnnJGKiookybvf/e6BHBMAAIABMmhjxGOPPZbbb789K1asSGdnZ2bMmJFHHnkkEyZMSEdHR3bu3HnY/6s+duzYVFVVZdOmTWWcevB74YUX8od/+If5rd/6rdx///09YaE3b9wjorOzM//lv/yXvPrqq5k/f366u7sHeGIAAAD626CMES+//HJuu+22tLa2ZtKkSamoqMi8efPS1dWVCRMmpLOzM0lSXV192HE1NTUplUpJkquuuiojR47M/fffX/j8g9kf/MEfpLq6Op///OePO0S8cY+ImTNn5oEHHsgTTzyRv/u7vxvgiQEAAOhvg/KjPdevX5/XXnstH/nIR3oe+/GPf5wkmTBhQoYPH54k2b9//2HHdXR0pKqqKkmybNmyPP300z33kyhi5r68Oe/rG/iTxZQpU3q+37ZtW5588sl86lOf6vOlGT8fIt44m+Xmm2/OAw88kC984QuZOnXqYcf09b8lAAAAA+tYZ7MPyhixZ8+evOtd7zrssZUrV+acc87puc/AqFGjsmHDhtTV1SV5/Y1yqVTK+PHjkyTnn39+oTNPmTIl69atO+bzDQ0NSfKma042b8z8htWrV6e7uzsf//jH+3T8sUJEkgwfPjz/+l//63zhC1/IoUOHcvrpp/c819t/SwAAAMprUF6mcdFFF2Xr1q1Zv359Dh06lJUrV6alpSUTJkzoWTN//vwsWbIk27dvT6lUSlNTUxobG4/6iQ70j+985zs577zzMmrUqF7XvlmIeMPkyZNz6NChbN68eSDGBQAAYIAMyhgxceLE3HXXXbnuuuty/vnn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kWhwdEBmh6zEmgxBzaqbgrCNMju6jKYaCqvSs6U76VETDPBHNmEXM2Mo1xmDD0l6XCHsUjM7FIE0QcmQRjq3RzIQm/v7Y9ZeOwkPavpcuP16VX0q957zPfd8zpemCW++53TWrl2brVu3pre3t8JdA+eiw4cPp729PX/7t3+bP//zP8/jjz+eD33oQ3nd6173irE1NTW57rrr8o1vfCMPP/xw9uzZk49//ON5y1veIogAAGBUqNowYv369Vm+fHk2btyYgYGBzJs3L11dXWlubk5/f3/279+f2bNnD41vampKfX19du7cWcGugXPRiRMnsnDhwuzevTt//dd/nU9+8pM577wz+/ZaW1ubF198MWPGjMkLL7yQ2traEe4WAAAqryrDiKNHj2bZsmXp7u5Oa2trampqsmTJkgwODqa5uTkDAwNJ8op/fWxsbEypVMo//dM/Zc6cOWlvb09ra2v+5m/+phKXAZwj/uIv/iLf+c538p//83/Oddddd8bH/eIZEbNnz843vvGN9Pb2ZuXKlSPYKQAAnB3GVLqBkbBt27acOHEi733ve4e2Pf/880mS5ubmjB07NknywgsvDDuuv78/9fX1mTBhQr73ve+ltrY2e/fuzb/5N/8mP/zhD4u7AOCc8S//8i/57Gc/m+uuuy5Lliw54+N+OYj4xa0Zd9xxR/7Lf/kvWbFihQdYAgBQ3cpV6P777y9fccUVw7bdfffd5UmTJg29nzJlSvmrX/3q0Punn366nKS8b9++Ycf96Ec/Kt92220j2m9bW1s5iVLqHKi2trZhv38feOCBcpLy//gf/+OMf8//9//+38tjxowpt7a2lvv7+4e2P/PMM+Xzzjuv/OlPf9r3CKWUUkopVRV1MlW5MmLGjBnZs2dPtm3blquvvjoPPfRQOjs7M2fOnKExS5cuzZo1a3LNNddk/Pjx6ejoyNy5czN16tQkyb59+7J48eL84z/+Y+67774R77mtrS2PPfbYSfe3t7cnySnHVIuVa7rT2bH0Fa957ZnrX80vfh/+skceeSSTJ0/Otddee0af8WorIn7hsssuy7XXXpu/+qu/yt133z3suNN9jwAAgHNJVT4zoqWlJatWrcr8+fMzefLk9PT0pLW1Nc3NzUNjVq5cmfe///1paWnJpZdemsHBwWzYsGFo/+WXX57vf//76enpySc+8YlKXAZw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7s6f/umfZtq0aUmStWvXZvr06ent7c1ll11W4c4BoPK+//3vZ+7cufmt3/qtPPHEE3nnO9950rE1NTVpa2vLe97znmzatCl/9Ed/lJ6ennzsYx8TRAAAr1C1t2msX78+y5cvz8aNGzMwMJB58+alq6srzc3N6e/vz/79+zN79uyh8U1NTamvr8/OnTsr2DUAnB3+6Z/+KR/84AczefLkfP/73z9lEPFyjz/+eF566aW87nWvy86dO3PixIkR7BQAOBdVZRhx9OjRLFu2LN3d3WltbU1NTU2WLFmSwcHBNDc3Z2BgIEnS0NAw7LjGxsaUSqUkyRvf+Ma0t7envb093d3dhV8DAFTSv/t3/y4DAwP5b//tv+Xiiy8+o2N++RkRd911V7761a/miSeeSFdX1wh3CwCca6ryNo1t27blxIkTee973zu07fnnn0+SNDc3Z+zYsUn+9YFcv6y/vz/19fVJkksvvTSPPfZYMQ0DwFlk586defjhh7N69erMmDHjjI55eRCxdu3aJMmmTZty991354477hj68xcAIOUqdP/995evuOKKYdvuvvvu8qRJk4beT5kypfzVr3516P3TTz9dTlLet29fuVwul88///zye97znvIHPvCB8tNPPz2i/ba1tZWTKKWUUhWptra2YX8uffSjHy2/8Y1vLP/0pz89oz/HTpw4Ub7jjjvKScp33XVX+cSJE0P7/uZv/qacpPz1r3/dn31KKaXUKKyTqcow4u/+7u/K5513Xvmxxx4rHzt2rLxx48ZyfX19+aabbhoa8/nPf758xRVXlPfu3Vt+4YUXyh/60IfKc+fOHdr//PPPl8vlcvnb3/72K/4n7bXW1tZ22nOcyZhq0dF576u+5rVnrotjrovzi/k1z2fm1f58ueyyy8oLFiw4o+NPFUT8Yv8ll1xSvuWWW057XgBg9KjKZ0a0tLRk1apVmT9/fiZPnpyenp60tramubl5aMzKlSvz/ve/Py0tLbn00kszODiYDRs2DO2fMGFCkuS6667LgQMHCr8GAKiEw4cPp7e394weWFl+lVszXv5TM2pqatLS0pIf/ehHI9UyAHAOqsowIklWr16dw4cP59ChQ+nq6sru3buHhRG1tbVZt25d+vr6MjAwkM2bNw8FEP/8z/+cwcHBJMmuXbty4YUXVuQaAKBozz77bJJk+vTppxx3JkHE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s+neLybJKccAAADA2aSzY+mrbh9TcB+F2bZtW2pqavKBD3zgFfvq6uqSJC+88MKw7f39/amv/9dnFtx///359re/PfQ8iZE2bcpvnfQXKUmefHRTkpP/Qlab48dfyutP8tM1eO2sXNM99DX1y6957Znr4vxifs3zyPI1DQD8Jqp2DXxfX1/GjRuXmpqaV+xrbGzMlClTsn379qFte/fuTalUysyZM5MkkydPLqxXXkkQAQAAUL2q9jaNXbt2pbm5OZs3b87NN9+cUqmUnp6ezJ07N0nyhS98IV//+tezdevWjB8/Pn/8x3+cgYGBbN26degz7r///hw4cMBtGgAAAPBrGHW3abz1rW/NV77yldx1111ZtGhR6urqcttttw2FEStXrsyRI0fS0tKSY8eO5YYbbsiGDRsq1q/bNKgEy6yLY66L4zaNYviaBgB+E1UbRiTJRz7ykXzkIx951X21tbVZt25d1q1bV3BXAAAAMLpVdRjxm7jtttvS09OTY8eOpaenJ4888kilWwIAAICqIIw4ia997WuVbgEAAACqUtX+NA0AAADg7CSMAAAAAAoljAAAAAAKJYwAAAAACiWMAAAAAAoljAD4/9u73xgt63vP45/bQcA/9/xxQOshDoWZ7V9FEBXxYB2dQ0aLp0pZ0tSU0CKRlESftGRMH5nYMUhot00fOeue+KcxOXsWG9KsnT4wB9rQ06ldeugSd9N1R2EwVnY8HYaSLG3H2Qe2syXDSIvO7x7ueb2ezH3/rivDl7khmLfX77oAAICixAgAAACgKDECAAAAKEqMAAAAAIoSIwAAAICixAgAAACgKDECAAAAKEqMAAAAAIoSIwAAAICixAgAAACgKDECAAAAKEqMAAAAAIoSIwAAAICixAgAAACgKDECAAAAKEqMAAAAAIoSIwAAAICixAgAAACgKDECAAAAKEqMAAAAAIoSIwAAAICixAgAAACgKDECAAAAKGpOrQcAyjj0yqv51evHJq3/04v7Jr2eP29u1t25OhdVKoWmAwAAZhMxAmaJaxZdlX96cX/+MDZ2xvp/+++/mvT603fcIkQAAADTxjYNmCWuaKrmtpuvO+d5rS2NuXXlJwtMBAAAzFZiBMwinauWp3rZJe95zqfvuCVzGhoKTQQAAMxGYgTMIvPmzU33p26e8njH4kX5RMfighMBAACz0ayNEWNjY9mxY0cWLlyYarWaDRs2ZHh4uNZjwbS74bqPZNFVCyatVyqVrLvzllTcKwIAAJhmszZG7Ny5M3v37s3AwECOHXv3CQObNm2q8VQw/S6qVHJP1+pJ6zdf/7FcfWVrDSYCAABmm7qPEQcOHEhXV1caGxvT3NycjRs3Jkn6+vrS09OTpUuXpqmpKbt27Up/f3+OHDlS44lh+i255upc99GlE+/nzb04a2+7sYYTAQAAs0ldx4g9e/Zk/fr12b59e44fP56hoaFs3bo1IyMjOXr0aFauXDlxbnt7exobG3Po0KEaTgzl3H3HqokbVXb97cpcful739gSAADgg1IZHx8fr/UQ0+HUqVNZvHhxnnrqqdx3331nHBsaGkpbW1sGBwezZMmSifXFixent7c3q1evzpe+9KWMj49nfHw83/rWt3LjjdP3f407OzszePTN3L/tK1Oe8/yT30iS9zwHAAAAZpKdPQ+edX1O4TmK2b9/fyqVSu69995Jx6rVapLkxIkTZ6yPjIxMbOf43ve+l9bW1rzyyivZtm1bfvzjH0/rvEvbrp7yQ0qSn/7g+SRTf5BwPk6f/l2OvTWc9ra/qfUode+RJ/om/v7++Ws+eH/6+fo5Ty9/pgGA96Nut2kMDw+npaXlrE8GaG5uTltbWw4ePDixNjg4mNHR0Sxbtiytra1pbX33Rn7z5s1Lwx8vZYd6M2/eXCECAAAorm63aRw+fDgrVqzICy+8kHXr1mV0dDQDAwPp7u5OkvT29ubZZ59Nf39/Wltb88ADD+TkyZPp7++f+B5jY2P5zGc+k4ceeih33XXXtM1qmwYAAAD1aKqrJ+s2RiTJM888k8cffzxvvPFGqtVqtmzZkt7e3iTvhoaenp48/fTTOX36dNauXZu+vr4sWLAgSTI+Pp4vfvGLueWWW/LlL395Wufs7OxMkuzbt+99nQPMXC5pL8c2jTL8mQYA3o+6vWdEkmzevDmbN28+67GGhobs3r07u3fvPuvxhx56KB0dHdMeIgAAAGC2qdt7Rrwf+/btS19fX1566aV0dnbms5/9bK1HAgAAgLpR11dGnK/Ozs787ne/q/UYAAAAUJdcGQEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFDUnFoPAFBv3h4ZzR9+/4dJ62/9n3+b9LpSqeTKBS3FZgMAgJlAjAD4gL3yq9fzX//5p5PW/8M//JdJr29c9tH8+7tvLzYbAADMBLZpAHzAVq/8ZBa0NJ3zvHlzL073bTcVmAgAAGYWMQLgAzanoSGfvvOWc553x+oVqV5+aYGJAABgZhEjAKbBx9vb0rF40ZTHr2iq5m9vvLbgRAAAMHPM2hgxNjaWHTt2ZOHChalWq9mwYUOGh4drPRZQJyqVSu7pWp1KpXLW43ffsSoXz3HbHgAAZqdZGyN27tyZvXv3ZmBgIMeOHUuSbNq0qcZTAfXkQwuvyM3Xf2zS+pJrrs61H1lSg4kAAGBmqPsYceDAgXR1daWxsTHNzc3ZuHFjkqSvry89PT1ZunRpmpqasmvXrvT39+fIkSM1nhioJ2tvuzHz582deF9J3vOKCQAAmA3qOkbs2bMn69evz/bt23P8+PEMDQ1l69atGRkZydGjR7Ny5cqJc9vb29PY2JhDhw7VcGKg3lx+6SXpuvWGifcrl300i65aUMOJAACg9uo2Rpw6dSrbtm1LX19fNmzYkPnz56daraa7uzsnT55MkjQ1nfnovebm5oyOjuatt97Krbfems7OzqxatSovvfRSLX4LQJ1YvfKTaW1pfPdRnp/yKE8AAKiMj4+P13qI6fDiiy9m8+bNOX78+KTLoUdGRtLS0pJf/OIXWb58+cR6U1NTnnvuuaxbty5J0tDQkMHBwXzuc5/Lyy+/PG2zdnZ2ZvDom7l/21emPOf5J7+RJO95DgAAAMwkO3sePOt63d7KfXh4OC0tLWfdl93c3Jy2trYcPHhwIkYMDg5mdHQ0y5YtS0NDw8S5IyMjWbZs2bTPu7Tt6ik/pCT56Q+eTzL1BwnMbOPj43nnnfE0NNTtBWkzxiNP9GVnz4MTX5kef/7z9bMGAP5adftfxTfccENee+21fP/7388777yTkZGR/PCHP5w4/uCDD+aJJ57Ia6+9ltHR0fT09KS7uzsf/vCHkySvvfZa1qxZk+7u7qxfv75GvwugXlQqFSECAAD+qG63aSTJM888k8cffzxvvPFGqtVqtmzZkt7e3iTJ2NhYenp68vTTT+f06dNZu3Zt+vr6smDBmTeWGxwczJ133pnXX3992ua0TQMAAIB6NNXVk3UdI87X6dOnM2/evCTvbvfo7OzM4cOHp+3X6+zsTJLs27fvfZ0DgG0apdimAQC8H3V7z4j34+WXX87Xvva1NDQ05Pe//32+/e1v13okAAAAqBtixFmsWbMmP/rRj2o9BgAAANQld1MDAAAAihIjAAAAgKLECAAAAKAoMQIAAAAoSowAAAAAihIjAAAAgKLECAAAAKAoMQIAAAAoSowAAAAAihIjAAAAgKLECAAAAKAoMQIAAAAoSowAAAAAihIjAAAAgKLECAAAAKAoMQIAAAAoSowAAAAAihIjAAAAgKLECAAAAKAoMQIAAAAoSowAAAAAihIjAAAAgKLECAAAAKAoMQIAAAAoSowAAAAAihIjAAAAgKLECAAAAKAoMQIAAAAoSowAAAAAippT6wEA4Hz98Ec/yxu/fnvS+j/85x+c8TVJ2v7myvzdmpXFZgMAYGpiBAAXrI8suSb//C//Omn9V68NnfE1SdbeJkQAAMwUtmkAcMFacs3Vue6jS8953g3X/rtcc/WVBSYCAOAvIUYAcEG7+45VmdPQMOXxiy+ek7s+dXPBiQAAOBcxAoAL2hVN1dx283VTHu+8ZXkaq5cVnAgAgHOZtTFibGwsO3bsyMKFC1OtVrNhw4YMDw/XeiwAzkPnquWpXnbJpPXmxsvzqZuW1WAiAADey6yNETt37szevXszMDCQY8eOJUk2bdpU46kAOB/z5s1N9+2Tt2Lc3bkqF1/sXs0AADNN3ceIAwcOpKurK42NjWlubs7GjRuTJH19fenp6cnSpUvT1NSUXbt2pb+/P0eOHKnxxACcjxuu/UgWXbVg4v3iRVdl2cfOfXNLAADKq+sYsWfPnqxfvz7bt2/P8ePHMzQ0lK1bt2ZkZCRHjx7NypX//zFv7e3taWxszKFDh2o4MQDn66JKJfd0rZ54f0/X6lQqlRpOBADAVCrj4+PjtR5iOpw6dSqLFy/OU089lfvuu++MY0NDQ2lra8vg4GCWLFkysb548eL09vbmC1/4QpLk7bffTkdHR77zne9MrE2Hzs7ODB59M/dv+8qU5zz/5DeS5D3PAQAAgJlkZ8+DZ12v2420+/fvT6VSyb333jvpWLVaTZKcOHHijPWRkZE0NjZOvP/617+eNWvWTO+gf7S07eopP6Qk+ekPnk8y9QcJwLv+7cTJzLnoIk/QmGaPPNE38W/Sn78GAPhL1O02jeHh4bS0tJz1Et3m5ua0tbXl4MGDE2uDg4MZHR3NsmXv3nX91Vdfzdtvv33GVg4AZr4rmqpCBADADFe32zQOHz6cFStW5IUXXsi6desyOjqagYGBdHd3J0l6e3vz7LPPpr+/P62trXnggQdy8uTJ9Pf3J0nuv//+PPbYY3nuuefS0dFhmwYAAAD8lWbdNo1rr702Tz31VL761a/m85//fKrVarZs2TIRIx555JH85je/yU033ZTTp09n7dq1+e53v5sk+clPfpLW1ta0t7cXm9c2DQAuJLZpAADvR93GiCTZvHlzNm/efNZjDQ0N2b17d3bv3j3p2M9//vP88pe/zF133ZVXX301l112Wdrb27N69eqzfCcAAADgr1HXMeJ8Pfzww3n44YeTJI8++mg6OjqECAAAAPiAiBHn8Oijj9Z6BAAAAKgrdfs0DQAAAGBmEiMAAACAosQIAAAAoCgxAgAAAChKjAAAAACKEiMAAACAosQIAAAAoCgxAgAAAChKjAAAAACKEiMAAACAosQIAAAAoCgxAgAAAChKjAAAAACKEiMAAACAosQIAAAAoCgxAgAAAChKjAAAAACKEiMAAACAosQIAAAAoCgxAgAAAChKjAAAAACKEiMAAACAosQIAAAAoCgxAgAAAChKjAAAAACKEiMAAACAosQIAAAAoCgxAgAAAChqTq0HAABmtvHx8QwefTPvjL9zxvr/ev3YWV9fOn9+Fn1oQbH5AIALjxgBALynSqWSX/7P/52Bf/0fZ6z/p3988ayvP3fPHWIEAPCebNMAAM5p7W03Zv68uec875qrr8z1n+goMBEAcCETIwCAc7r80kvSdesN5zzv77tW56JKpcBEAMCFTIwAAP4iq1d+MgtamqY8vvwTHWlbdFXBiQCAC9WsjRFjY2PZsWNHFi5cmGq1mg0bNmR4eLjWYwHAjDWnoSGfvvOWsx67eE5D7rr95sITAQAXqlkbI3bu3Jm9e/dmYGAgx469ewfwTZs21XgqAJjZPt7elo7Fiyatf2rV9WluvLwGEwEAF6K6jxEHDhxIV1dXGhsb09zcnI0bNyZJ+vr60tPTk6VLl6apqSm7du1Kf39/jhw5UuOJAWDmqlQquadrdSp/dl+Ixssvy+03X1/DqQCAC01dx4g9e/Zk/fr12b59e44fP56hoaFs3bo1IyMjOXr0aFauXDlxbnt7exobG3Po0KEaTgwAM9+HFl6RVcs/PvH+7s6bM3fuxTWcCAC40NRtjDh16lS2bduWvr6+bNiwIfPnz0+1Wk13d3dOnjyZJGlqOvMmXM3NzRkdHU2SXHLJJens7ExnZ2f6+vqKzw8AM9nfrVmZ+fPmepQnAHBe5tR6gOmyf//+VCqV3HvvvZOOVavVJMmJEyfOWB8ZGUljY2OSZNGiRdm3b9+0z/kng0ffzCNPTB09Bo++mSTveQ4AlDb05vF8bdd/rPUYAMAMtbPnwbOu122MGB4eTktLyxl7Wv+kubk5bW1tOXjwYJYvX54kGRwczOjoaJYtW5Yk+fWvf53bb789LS0t+eY3v5mlS5dO26zLly/P8uXLp/yQkuT/vvlKkqk/SAAobXx8/Kz/zgIAnEtlfHx8vNZDTIfDhw9nxYoVeeGFF7Ju3bqMjo5mYGAg3d3dSZLe3t48++yz6e/vT2trax544IGcPHky/f39Sd6NGQsWLMhLL72Uxx57rOhVEgAAAFDP6jZGJMkzzzyTxx9/PG+88Uaq1Wq2bNmS3t7eJMnY2Fh6enry9NNP5/Tp01m7dm36+vqyYMGCSd+no6Mjr7766rTOavsFAAAA9Waqq/vrOkacr9/+9re55JJL0tDQkMOHD2fLli352c9+VuuxAAAAoC7U7T0j3o9XXnkl27Ztm7jR5ZNPPlnjiQAAAKB+uDICAAAAKOqiWg8AAAAAzC5iBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARYkRAAAAQFFiBAAAAFCUGAEAAAAUJUYAAAAARf0/5eEomkYCtWAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1384.6x2245.46 with 1 Axes>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Step 4 apply Hadamard gates to the first register\n",
    "for i in range(n):\n",
    "    simonCircuit.h(qr[i])\n",
    "    \n",
    "# Step 5 perform measurement on the first register\n",
    "for i in range(n):\n",
    "    simonCircuit.measure(qr[i], cr[i])\n",
    "\n",
    "#draw the circuit\n",
    "simonCircuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Experimenting with Simulators\n",
    "\n",
    "We show the experiments of finding the hidden integer with simulators."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T18:47:10.099909Z",
     "start_time": "2018-09-25T18:47:08.226926Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# use local simulator\n",
    "backend = BasicAer.get_backend(\"qasm_simulator\")\n",
    "# the number of shots is twice the length of the bitstring\n",
    "shots = 2*n\n",
    "job = execute(simonCircuit, backend=backend, shots=shots)\n",
    "answer = job.result().get_counts()\n",
    "\n",
    "plot_histogram(answer)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can see that the results of the measurements are the basis whose inner product with the hidden string $s$ are zero. \n",
    "\n",
    "*(Notice that the basis on the label of the x-axis in the above plot are numbered from right to left instead of from left to right that we used for $s$)*\n",
    "\n",
    "Gathering the measurement results, we proceed to post-processing with computations that can be done on classical computers. \n",
    "\n",
    "### Post Processing with Gaussian Elimination\n",
    "\n",
    "The post processing is done with Gaussian elimination to solve the system of linear equations to determine $s$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T18:47:10.109591Z",
     "start_time": "2018-09-25T18:47:10.101528Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The hidden bistring s[ 0 ], s[ 1 ]....s[ 5 ] is the one satisfying the following system of linear equations:\n",
      "s[ 0 ] = 0\n",
      "s[ 1 ] + s[ 5 ] = 0\n",
      "s[ 2 ] = 0\n",
      "s[ 3 ] + s[ 5 ] = 0\n",
      "s[ 4 ] = 0\n"
     ]
    }
   ],
   "source": [
    "# Post-processing step\n",
    "# Constructing the system of linear equations Y s = 0\n",
    "# By k[::-1], we reverse the order of the bitstring\n",
    "lAnswer = [ (k[::-1],v) for k,v in answer.items() if k != \"0\"*n  ] #excluding the trivial all-zero\n",
    "#Sort the basis by their probabilities\n",
    "lAnswer.sort(key = lambda x: x[1], reverse=True)\n",
    "\n",
    "Y = []\n",
    "for k, v in lAnswer:\n",
    "    Y.append( [ int(c) for c in k ] )\n",
    "\n",
    "\n",
    "#import tools from sympy\n",
    "from sympy import Matrix, pprint, MatrixSymbol, expand, mod_inverse\n",
    "\n",
    "\n",
    "Y = Matrix(Y)\n",
    "\n",
    "#pprint(Y)\n",
    "\n",
    "#Perform Gaussian elimination on Y\n",
    "Y_transformed = Y.rref(iszerofunc=lambda x: x % 2==0) # linear algebra on GF(2) \n",
    "\n",
    "#to convert rational and negatives in rref of linear algebra on GF(2)\n",
    "def mod(x,modulus):\n",
    "    numer, denom = x.as_numer_denom()\n",
    "    return numer*mod_inverse(denom,modulus) % modulus\n",
    "\n",
    "Y_new = Y_transformed[0].applyfunc(lambda x: mod(x,2)) #must takecare of negatives and fractional values\n",
    "#pprint(Y_new)\n",
    "\n",
    "print(\"The hidden bistring s[ 0 ], s[ 1 ]....s[\",n-1,\"] is the one satisfying the following system of linear equations:\")\n",
    "rows, cols = Y_new.shape\n",
    "for r in range(rows):\n",
    "    Yr = [ \"s[ \"+str(i)+\" ]\" for i, v in enumerate(list(Y_new[r,:])) if v == 1 ]\n",
    "    if len(Yr) > 0:\n",
    "        tStr = \" + \".join(Yr)\n",
    "        print(tStr, \"= 0\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As seen above, the system of linear equations is satisfied by the hidden integer $s$. Notice that there can be more than one solutions to the system. In fact, all-zero bitstring is a trivial solution to the system of linear equations. But by having more samples one can narrow down the candidates of the solution, and then test the solution by querying the blackbock in the classical manner.\n",
    "\n",
    "## Experimenting with Real Devices\n",
    "\n",
    "We see how one can still find out the hidden integer by running the Simon algorithm on real devices. Due to imperfect quantum computers, obtaining the conclusion is not as easy as done with the simulator of perfect quantum computers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-25T18:52:15.659234Z",
     "start_time": "2018-09-25T18:52:14.298564Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Status of ibmq_16_melbourne is BackendStatus(backend_name='ibmq_16_melbourne', backend_version='1.0.0', operational=True, pending_jobs=6, status_msg='active')\n",
      "Job Status: job has successfully run\n"
     ]
    }
   ],
   "source": [
    "#Use one of the available backends \n",
    "backend = IBMQ.get_backend(\"ibmq_16_melbourne\")\n",
    "\n",
    "# show the status of the backend\n",
    "print(\"Status of\", backend, \"is\", backend.status())\n",
    "\n",
    "shots = 10*n #run more experiments to be certain\n",
    "max_credits = 3          # Maximum number of credits to spend on executions. \n",
    "\n",
    "simonCompiled = transpile(simonCircuit, backend=backend, optimization_level=1)\n",
    "job_exp = execute(simonCompiled, backend=backend, shots=shots, max_credits=max_credits)\n",
    "job_monitor(job_exp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-26T14:28:21.410640Z",
     "start_time": "2018-09-26T14:28:20.585612Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdUAAAFhCAYAAAAm4jCUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXwV9b3/8dcnKxBJSFgTtgAqjagQglUU0Fasgq0LWqtVq7UuSLW312vt3mt7e7UXS8Xa27q1P62213qFul2olqJiFRcIoiyyiICQgEAQkC0kfH9/fOeEk5NzTnKSSUjk/Xw8ziM58/3Od5s585mZM2fGnHOIiIhIy6Ud7gaIiIh8WiioioiIhERBVUREJCQKqiIiIiFRUBUREQmJgqqIiEhIFFRFRERC0uZB1cymmNkHZrbPzBaa2dhG8p8e5NtnZmvMbHKcPIVm9oiZbQnyLTOz06PSzcxuN7MKM9trZi+Z2bDW6J+IiBy52jSomtlXgHuAO4BS4DVgtpkNSJB/EDAryFcK3Anca2YXReXpBrwKGHAuUALcDHwUVdRtwL8F008K0v5uZl3D7J+IiBzZrC3vqGRmbwDvOOeui5q2CnjSOff9OPn/C5jknDsmatpDwDDn3Ojg/R3A6c650xLUaUAF8Bvn3H8G0zrjA+utzrn7Q+ugiIgc0drsSNXMsoAy4IWYpBeAUxPMNjpO/ueBUWaWGby/AHjDzP5iZh+Z2dtmdlMQTAEGAX2iy3HO7QXmJalXREQkZRltWFcPIB3YHDN9MzA+wTx9gDlx8mcE5VUCg4EpwN3AL4ARwL1B3t8EZUTmiy2nb7xKzex64HqAzp07l/Xv3x+AzMxM0tLS2L9/PwDp6elkZWWxd+/eunm7dOnCvn37OHjwIACdOnWipqaGmpqaujLMjOrq6rhlmBmdO3dm7969RM4ixJaRlZUFUK+MzMxM9u3bl7SMAwcOUFtbG7eMjIwMMjIykpbRuXNnqqur65XhnOPAgQNxy0hLS6NTp07s2bOnbnxiy8jOzubgwYN1ZcSOcbwyYse4sTK0nLSctJy0nMJeTkuXLt3qnOtJjLYMqq0lDVgQdfp4kZkdA3wTH1RT5px7AHgAoLS01M2dOzeUhoqIyKdDQUHBunjT2/JCpa1ALdA7ZnpvYFOCeTYlyF8TlAf+aHVZTJ7lQOTip01R8zW1XhERkZS1WVB1zlUDC4GzYpLOwl/dG8/8BPkXOOcOBO9fBYbG5DkWiOxFfIAPnnXlmFknYGySekVERFLW1r9T/RVwtZlda2YlZnYPUATcB2BmfzSzP0blvw/oa2bTg/zXAlcDv4zKczdwipn90MyONrMvA98C/hvA+RPj04HvmtkkMzseeBj4BPhza3ZWRESOLG36napz7i9m1h34EVAILAEmOuciR5UDYvJ/YGYT8YHzRvxPY77lnJsRlectM7sA/9vXHwPrg7+/jSpqKtAZH2jzgTeALzjndoXfSxEROVK16e9UOyJdqCQiIrEKCgoWOudGxU7XvX9FRERCoqAqIiISEgVVERGRkCioioiIhERBVUREJCQKqiIiIiFRUBUREQmJgqqIiEhIFFRFRERCoqAqIiISEgVVERGRkCioioiIhERBVUREJCQKqiIiIiFRUBUREQmJgqqIiEhIFFRFRERCoqAqIiISEgVVSWrOnDl89rOfpaysjOnTpzdI379/P9dccw1lZWWMHz+e9evXA7B+/XqKiooYN24c48aN45Zbbqmb5+233+a0006jrKyM733vezjn2qw/h4vGsX2MQXtog3y6KahKQrW1tdx222088cQTzJ8/nxkzZvDee+/Vy/PYY4/RrVs3Fi5cyI033sjtt99el1ZcXMy8efOYN28ev/rVr+qm33rrrUyfPp0FCxbw/vvvM2fOnLbq0mGhcWwfY9Ae2iCffgqqktDChQsZNGgQxcXFZGVlMWnSJGbPnl0vz6xZs7j00ksBOP/885k3b17SPfVNmzaxa9cuTjrpJMyMSy+9lFmzZrVqPw43jWP7GIP20Ab59FNQlYQqKyvp27dv3fuioiIqKysT5snIyCA3N5eqqirAnzI7/fTT+eIXv8j8+fPr8hcVFSUt89NG49g+xqA9tEE+/TIOdwPk06l379688847FBQU8Pbbb3PFFVfw2muvHe5mdTgax/YxBu2hDdIx6EhVEiosLGTjxo117ysqKigsLEyYp6amhp07d1JQUEB2djYFBQUAjBgxgkGDBvH+++9TWFhIRUVF0jI/bTSO7WMM2kMb5NNPQVUSGjlyJGvWrGHdunVUV1czc+ZMzjnnnHp5JkyYwOOPPw7A008/zdixYzEztm7dSm1tLQBr165lzZo1FBcX06dPH7p27cpb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mrfeeouDBw/inKNXr1488cQTTJ48mZqaGj788EN2795Nly5dOHDgAGlpaVx99dW8+uqr9dL79+/P9u3b2bdvHz179qRr165kZWVRU1PD6tWrOXjwIOnp6UnrSEtLIy0tLWF6bm4u3bt3Jz8/n1//+tcN0rOysujbty89jruekjHf5Ll7xwLw+u9r2bhxI9nZ2Wzbto20tDRuuOEGbr/99roxWLRoEaeeeirz589P2AfnHAMGDABI2oZOuf0ZevK1Ddqwdu1a9u/fXzcGh2M5qA9+XcjPz8c5R35+Pn/4wx8a9KFTp04UFBQ0e1265GyEjlMAACAASURBVJJL2L59O4sXLyYvL489e/bU6wPA1VdfDcMeBKB63y6eu3csr//e/zKwoqKCL3/5y/CZ+1p9m9HjuOsZPv579dL379/PjTfeyOLFi+OO0aJFi7jsssuYOnVqvfZHxqiiooKTTz6ZVatW8dHHjqEnX9ugjjC2S41tMzrCdmvYsGG88or/UcuuXbs499xz68Yosh7ceeedqS9k55xeSV4jRoxwVVVVDV5btmxxxcXFrry83G3atMkNGzbMvfbaa/XSCwoK3EUXXeQ2bdrk+vXr5z7/+c+7qqoq9+GHH7pnn33W5eTkuMGDB8dNnzVrlsvNzXUZGRmuvLzc/e53v3O5ubnutddeq0svKipymZmZCesYPHiw69SpU8I6nn32WZeWluaKiooStiEvL88NGDDAVVVVuQcffNBdcMEF9eZPT093n/vc59ymTZtcQdGJ7qLvLnXX3u3ctXc7V1VV5YqKilznzp0T9uGuu+5y2dnZCfswZMgQN27cOPeZz3ym0TZ8/a79DdqwZcsWl56e7saNG3fYloP64NeFvn37unPOOSfh/N27d3eXXHJJs9eladOmuVNPPdVdffXVcesYMmSImzJlirv22mvryo0uv6qqyg0fPtw999xzDdKj80ReqabHbjPi9fGuu+5K2P5IH6+99tqE9Z944omuT58+rry8vMFyCGO71JRtRnvfbs2aNcv17dvXnXvuuXG37dHrQaL0qqoqByyIFzN0+reZFi5cyKBBgyguLiYrK4tJkyYxe/bseunOOa677jqysrK46qqrmD9/Ps45cnJyyMzMBGDYsGFx03v06MHu3bvJz8+nuLiYiy66iAMHDjBr1qy69J07d5KWlha3jsrKSnbu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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results = job_exp.result()\n",
    "answer = results.get_counts(simonCircuit)\n",
    "\n",
    "plot_histogram(answer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The hidden bistring s[ 0 ], s[ 1 ]....s[ 5 ] is the one satisfying the following system of linear equations:\n",
      "s[ 0 ] = 0\n",
      "s[ 1 ] = 0\n",
      "s[ 2 ] = 0\n",
      "s[ 3 ] = 0\n",
      "s[ 4 ] = 0\n",
      "s[ 5 ] = 0\n"
     ]
    }
   ],
   "source": [
    "# Post-processing step\n",
    "# Constructing the system of linear equations Y s = 0\n",
    "# By k[::-1], we reverse the order of the bitstring\n",
    "lAnswer = [ (k[::-1][:n],v) for k,v in answer.items() ] #excluding the qubits that are not part of the inputs\n",
    "#Sort the basis by their probabilities\n",
    "lAnswer.sort(key = lambda x: x[1], reverse=True)\n",
    "\n",
    "Y = []\n",
    "for k, v in lAnswer:\n",
    "    Y.append( [ int(c) for c in k ] )\n",
    "\n",
    "Y = Matrix(Y)\n",
    "\n",
    "#Perform Gaussian elimination on Y\n",
    "Y_transformed = Y.rref(iszerofunc=lambda x: x % 2==0) # linear algebra on GF(2)\n",
    "Y_new = Y_transformed[0].applyfunc(lambda x: mod(x,2)) #must takecare of negatives and fractional values\n",
    "#pprint(Y_new)\n",
    "\n",
    "print(\"The hidden bistring s[ 0 ], s[ 1 ]....s[\",n-1,\"] is the one satisfying the following system of linear equations:\")\n",
    "rows, cols = Y_new.shape\n",
    "for r in range(rows):\n",
    "    Yr = [ \"s[ \"+str(i)+\" ]\" for i, v in enumerate(list(Y_new[r,:])) if v == 1 ]\n",
    "    if len(Yr) > 0:\n",
    "        tStr = \" + \".join(Yr)\n",
    "        print(tStr, \"= 0\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## References\n",
    "\n",
    "[1] \"[On the power of quantum computation](https://epubs.siam.org/doi/abs/10.1137/S0097539796298637)\", Daniel R. Simon, SIAM J. Comput., 26(5), 1474–1483 (1997) "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
